**** REPLICATION DO FILE FOR ANALYSIS
**** Kefford, G., Moffitt, B., & Werner, A. (2022). Populist Attitudes: Bringing Together Ideational and Communicative Approaches. Political Studies, 70(4), 1006-1027. https://doi.org/10.1177/0032321721997741
****

clear
use Kefford,Moffit,Werner2022PoliticalStudies.dta, clear
set scheme sol
set more off


tab gender
tab education
tab indigenous
histogram leftright, discrete percent normal
graph export "leftright_mod2.tiff", as(tif) replace

tab exp_group seen_video, mis
tab exp_group respect_laws
tab exp_group feel_Aus
tab exp_group support_wrongAus
tab exp_group immi_jobs
tab exp_group immi_incr
tab exp_group immi_culture
tab exp_group aus_identity
tab exp_group white_adv
tab exp_group aus_life
tab exp_group incr_diversity
tab exp_group migr_culture
tab exp_group prefer_white

***************************
****Factor Analyses for populism items 
***************************

** turn around disagree_evil -> load pos
gen disagree_evil_neg = disagree_evil * -1
replace disagree_evil_neg = disagree_evil_neg + 3
** note: correct order
*will_people people_decide rep_ordinary elected_corrup bad_decisions parties_care media_mates diff_parties minor_signal minor_good disagree_inform disagree_evil bad_views pol_entertain offend pol_ordinary improve_lives talk_action

*/
gen weight = round(module_weight)

** Correlation matrix of populism items
pwcorr will_people people_decide  elected_corrup rep_ordinary talk_action improve_lives disagree_evil bad_views disagree_inform pol_entertain offend pol_ordinary, sig

* principal axes
factor will_people people_decide rep_ordinary elected_corrup bad_decisions parties_care media_mates diff_parties minor_signal minor_good disagree_inform disagree_evil bad_views pol_entertain offend pol_ordinary improve_lives talk_action [fweight=weight] , ipf fac(5) 
rotate, promax blanks(0.40) 
estat common

* Item Response Model; Graded Response Model (GRM)
* one populism scale
irt grm people_decide rep_ordinary elected_corrup bad_decisions parties_care media_mates diff_parties minor_signal minor_good disagree_inform bad_views pol_entertain offend pol_ordinary improve_lives talk_action
irtgraph tif, se scheme(sol)
graph export "IRT_TIF_full.tiff", as(tif) replace

irtgraph iif (people_decide, lc(gs12)) (rep_ordinary, lc(gs12)) (elected_corrup, lc(gs12)) (bad_decisions, lc(gs12)) (parties_care, lc(gs12)) (media_mates, lc(gs12)) (diff_parties, lc(gs12)) (minor_signal, lc(gs12)) (minor_good, lc(gs12)) (disagree_inform, lc(gs12)) (bad_views, lc(gs12)) (pol_entertain, lc(black)) (offend, lc(black)) (pol_ordinary, lc(black)) (improve_lives, lc(gs12)) (talk_action, lc(gs12)), legend(on order(12 "Entertaining Politicians" 13 "Allow to offend" 14 "Politicians speak ordinary")) scheme(sol)
graph export "IRT_IIF_full.tiff", as(tif) replace

irtgraph iif (pol_entertain) (offend) (pol_ordinary), legend(on order(1 "Entertaining Politicians" 2 "Allow to offend" 3 "Politicians speak ordinary")) scheme(sol)

* factor 1
irt grm will_people people_decide rep_ordinary
irtgraph tif, se
irtgraph iif
* factor 2
irt grm elected_corrup bad_decisions parties_care media_mates
irtgraph tif, se
irtgraph iif
* factor 3
irt grm diff_parties minor_signal minor_good
irtgraph tif, se
irtgraph iif
* factor 4
irt grm disagree_inform disagree_evil bad_views,  iterate(100)
irtgraph tif, se
irtgraph iif
irt grm disagree_inform bad_views
irtgraph tif, se
irtgraph iif
* factor 5 -- report in Appendix
irt grm pol_entertain offend pol_ordinary
irtgraph tif, se
irtgraph iif, legend(on order(1 "Entertaining Politicians" 2 "Allow to offend" 3 "Politicians speak ordinary")) scheme(s1mono)

* creating populism factors from 5-factor solution
gen pop_people_centred = (people_decide + rep_ordinary)/2
gen pop_anti_elite = (elected_corrup + bad_decisions + parties_care + media_mates)/4 

*gen anti_mainstream = (minor_signal + diff_parties + minor_good)/3
gen pop_manichean_outlook = (bad_views + disagree_inform)/2
gen pop_communication = (pol_entertain + offend + pol_ordinary)/3		

graph hbox pop_people_centred  pop_anti_elite  pop_manichean_outlook pop_communication, legend(order(1 "People-Centredness" 2 "Anti-Elite" 3 "Manichean Outlook" 4 "Populist Communication")) ylabel(0 "low" 3 "high") ytitle(Populism)
graph export "Pop-distribution.tiff", as(tif) replace

pwcorr pop_people_centred pop_anti_elite pop_manichean_outlook pop_communication, sig
sum pop_people_centred pop_anti_elite pop_manichean_outlook pop_communication, detail

*** irt of 4 dimensions on one populism scale
gen pop_people_centred2 = pop_people_centred * 2
gen pop_anti_elite2 = pop_anti_elite * 4
gen pop_manichean_outlook2 = pop_manichean_outlook * 2
gen pop_communication2 = pop_communication * 3

irt grm pop_people_centred2 pop_anti_elite2 pop_manichean_outlook2 pop_communication2
irtgraph tif, se
graph export "IRT_TIF_dimensions.tiff",  as(tif) replace
irtgraph iif, legend(on order(1 "People-Centredness" 2 "Anti-Elite" 3 "Manichean Outlook" 4 "Populist Communication")) 
graph export "IRT_IIF_dimensions.tiff",  as(tif) replace


*** confirmatory factor analysis for 4 dimensions

sem (pop_people_centred  pop_anti_elite  pop_manichean_outlook pop_communication <- Populism), method(ml) standardized
estat eqgof
estat gof, stats(all)

* ideational populism dimension

gen pop_ideational = (people_decide + rep_ordinary + elected_corrup + bad_decisions + parties_care + media_mates + bad_views + disagree_inform)/8
sum pop_ideational, detail

gen pop_all = (people_decide + rep_ordinary + elected_corrup + bad_decisions + parties_care + media_mates + bad_views + disagree_inform + pol_entertain + offend + pol_ordinary)/11
sum pop_all, detail

graph hbox pop_people_centred  pop_anti_elite  pop_manichean_outlook pop_communication pop_ideational pop_all, legend(order(1 "People-Centredness" 2 "Anti-Elite" 3 "Manichean Outlook" 4 "Populist Communication" 5 "Ideational Populism Score" 6 "Overall Populism Score")) ylabel(0 "low" 3 "high") ytitle(Populism)
graph export "Pop-distribution_6dims.tiff", as(tif) replace


************************************
*** Additing policy issues -- higher values more nativism
************************************

gen migrants_allowed = .
replace migrants_allowed = 0 if q24_2 == "Not gone nearly far enough"
replace migrants_allowed = 1 if q24_2 == "Not gone far enough"
replace migrants_allowed = 2 if q24_2 == "About right"
replace migrants_allowed = 3 if q24_2 == "Gone too far"
replace migrants_allowed = 4 if q24_2 == "Gone much too far"

gen too_much_hel_ind = .
replace too_much_hel_ind = 0 if b6_1 == "Strongly Disagree"
replace too_much_hel_ind = 1 if b6_1 == "Disagree"
replace too_much_hel_ind = 2 if b6_1 == "Agree"
replace too_much_hel_ind = 3 if b6_1 == "Strongly Agree"

gen celebrate_more_ind = .
replace celebrate_more_ind = 0 if b6_2 == "Strongly Agree"
replace celebrate_more_ind = 1 if b6_2 == "Agree"
replace celebrate_more_ind = 2 if b6_2 == "Disagree"
replace celebrate_more_ind = 3 if b6_2 == "Strongly Disagree"

gen more_effords_by_ind = .
replace more_effords_by_ind = 0 if b6_3 == "Strongly Disagree"
replace more_effords_by_ind = 1 if b6_3 == "Disagree"
replace more_effords_by_ind = 2 if b6_3 == "Agree"
replace more_effords_by_ind = 3 if b6_3 == "Strongly Agree"

pwcorr too_much_hel_ind celebrate_more_ind more_effords_by_ind migrants_allowed, sig

factor too_much_hel_ind celebrate_more_ind more_effords_by_ind migrants_allowed, pcf
rotate, orthogonal varimax blanks(.5)

************************************
*** populism and authoritarian values
************************************

tab strong_leader [aweight = module_weight]
tab limit_police [aweight = module_weight]
tab disrupt_punish [aweight = module_weight]

pwcorr strong_leader limit_police disrupt_punish, print(.001) bonferroni 

* factor analysis

factor will_people disagree_evil elected_corrup people_decide rep_ordinary ///
	bad_views improve_lives talk_action disagree_inform pol_entertain offend ///
	pol_ordinary minor_signal bad_decisions diff_parties  ///
	parties_care media_mates minor_good ///
	strong_leader limit_police disrupt_punish, pcf
scree
rotate, orthogonal varimax blanks(.49)
rotate, promax blanks(.49)
estat common	

** regression analysis

** strong leader
gen strong_leader_b = 0 if strong_leader == 0 | strong_leader == 1
replace strong_leader_b = 1 if strong_leader == 2 | strong_leader == 3

logistic strong_leader_b pop_people_centred  pop_anti_establishment pop_anti_mainstream pop_anti_pluralist 			pop_communication [pweight = module_weight]
logistic strong_leader_b pop_people_centred  pop_anti_establishment pop_anti_mainstream pop_anti_pluralist 			pop_communication age gender i.education income i.employ i.vote19 [pweight = module_weight]

margins, at(pop_communication=(0(0.1)3))
marginsplot, ylabel(0(0.1)1) recast(line) recastci(rarea) ytitle("Probability pro strong leader") xtitle("Agreement populist communication") xlabel(0(0.5)3) title("")
graph export "predprob_Pop_com_strong_lead.tiff", as(tif) replace

margins, at(pop_people_centred=(0(0.1)3))
marginsplot, ylabel(0(0.1)1) recast(line) recastci(rarea) ytitle("Probability pro strong leader") xtitle("Agreement people centerdness") xlabel(0(0.5)3) title("")

margins, at(pop_anti_establishment=(0(0.1)3))
marginsplot, ylabel(0(0.1)1) recast(line) recastci(rarea) ytitle("Probability pro strong leader") xtitle("Anti-estbalishment") xlabel(0(0.5)3) title("")

margins, at(pop_anti_mainstream=(0(0.1)3))
marginsplot, ylabel(0(0.1)1) recast(line) recastci(rarea) ytitle("Probability pro strong leader") xtitle("Anti-mainstream") xlabel(0(0.5)3) title("")

margins, at(pop_anti_pluralist=(0(0.1)3))
marginsplot, ylabel(0(0.1)1) recast(line) recastci(rarea) ytitle("Probability pro strong leader") xtitle("Anti-pluralism") xlabel(0(0.5)3) title("")

** limit policy for freedom
gen limit_police_b = 0 if limit_police == 0 | limit_police == 1
replace limit_police_b = 1 if limit_police == 2 | limit_police == 3

logistic limit_police_b pop_people_centred  pop_anti_establishment pop_anti_mainstream pop_anti_pluralist 			pop_communication [pweight = module_weight]

logistic limit_police_b pop_people_centred  pop_anti_establishment pop_anti_mainstream pop_anti_pluralist 			pop_communication age gender i.education income i.employ i.vote19 [pweight = module_weight]

margins, at(pop_communication=(0(0.1)3))
marginsplot, ylabel(0(0.1)1) recast(line) recastci(rarea) ytitle("Probability pro freedom vs police") xtitle("Agreement populist communication") xlabel(0(0.5)3) title("")
graph export "predprob_Pop_com__freedom_police.tiff", as(tif) replace

margins, at(pop_people_centred=(0(0.1)3))
marginsplot, ylabel(0(0.1)1) recast(line) recastci(rarea) ytitle("Probability pro freedom vs police") xtitle("Agreement people centerdness") xlabel(0(0.5)3) title("")
graph export "predprob_Peopl_center_freedom_police.tiff", as(tif) replace

margins, at(pop_anti_establishment=(0(0.1)3))
marginsplot, ylabel(0(0.1)1) recast(line) recastci(rarea) ytitle("Probability pro freedom vs police") xtitle("Anti-estbalishment") xlabel(0(0.5)3) title("")
graph export "predprob_Anti_establ_freedom_police.tiff", as(tif) replace

margins, at(pop_anti_mainstream=(0(0.1)3))
marginsplot, ylabel(0(0.1)1) recast(line) recastci(rarea) ytitle("Probability pro freedom vs police") xtitle("Anti-mainstream") xlabel(0(0.5)3) title("")
graph export "predprob_Anti_mainstream_freedom_police.tiff", as(tif) replace

margins, at(pop_anti_pluralist=(0(0.1)3))
marginsplot, ylabel(0(0.1)1) recast(line) recastci(rarea) ytitle("Probability pro freedom vs police") xtitle("Anti-pluralism") xlabel(0(0.5)3) title("")
graph export "predprob_Anti_pluralism_freedom_police.tiff", as(tif) replace

** punish distupters
gen disrupt_punish_b = 0 if disrupt_punish == 0 | disrupt_punish == 1
replace disrupt_punish_b = 1 if disrupt_punish == 2 | disrupt_punish == 3

logistic disrupt_punish_b pop_people_centred  pop_anti_establishment pop_anti_mainstream pop_anti_pluralist 			pop_communication [pweight = module_weight]

logistic disrupt_punish_b pop_people_centred  pop_anti_establishment pop_anti_mainstream pop_anti_pluralist 			pop_communication age gender i.education income i.employ i.vote19 [pweight = module_weight]	

margins, at(pop_communication=(0(0.1)3))
marginsplot, ylabel(0(0.1)1) recast(line) recastci(rarea) ytitle("Probability pro punish disrupters") xtitle("Agreement populist communication") xlabel(0(0.5)3) title("")
graph export "predprob_Pop_com_punish_disrupters.tiff", as(tif) replace

margins, at(pop_people_centred=(0(0.1)3))
marginsplot, ylabel(0(0.1)1) recast(line) recastci(rarea) ytitle("Probability pro punish disrupters") xtitle("Agreement people centerdness") xlabel(0(0.5)3) title("")

margins, at(pop_anti_establishment=(0(0.1)3))
marginsplot, ylabel(0(0.1)1) recast(line) recastci(rarea) ytitle("Probability pro punish disrupters") xtitle("Anti-estbalishment") xlabel(0(0.5)3) title("")

margins, at(pop_anti_mainstream=(0(0.1)3))
marginsplot, ylabel(0(0.1)1) recast(line) recastci(rarea) ytitle("Probability pro punish disrupters") xtitle("Anti-mainstream") xlabel(0(0.5)3) title("")
graph export "predprob_Anti_mainstream_punish_disrupters.tiff", as(tif) replace

margins, at(pop_anti_pluralist=(0(0.1)3))
marginsplot, ylabel(0(0.1)1) recast(line) recastci(rarea) ytitle("Probability pro punish disrupters") xtitle("Anti-pluralism") xlabel(0(0.5)3) title("")

************************************
**** populism dimensions plus authoritarianism, policy => vote
************************************

* Vote for ONE NATION

gen vote_on = 0 if vote19 != .
replace vote_on = 1 if vote19 == 6

replace gender = . if gender == 2
replace employ = 2 if employ == 3
label var employ employ
label define employ 0 "full-time" 1 "part-time" 2 "unemployed" 4 "retired" 5 "student" 6 "keeping house" 7 "other"
label val employ employ
label var education education
label define education 0 "<12 years" 1 "12 years" 2 "(Adv) Diploma" 3 "BA" 4 "Grad Dipl/Cert" 5 "Postgrad"
label val education education

*no interaction
logistic vote_on pop_people_centred pop_anti_elite pop_manichean_outlook pop_communication strong_leader disrupt_punish limit_police too_much_hel_ind celebrate_more_ind more_effords_by_ind migrants_allowed age gender i.education income i.employ [pweight = module_weight]
outreg2 using ON_interact.doc, eform ctitle(no interaction) dec(2) label(proper) side noparen

*interactions communication with three ideology dimensions
logistic vote_on c.pop_people_centred##c.pop_communication pop_anti_elite pop_manichean_outlook strong_leader disrupt_punish limit_police too_much_hel_ind celebrate_more_ind more_effords_by_ind migrants_allowed age gender i.education income i.employ [pweight = module_weight]
outreg2 using ON_interact.doc, eform append ctitle(interaction 1) dec(2) label(proper) side noparen

margins , dydx(pop_communication) at(pop_people_centred=(0(0.1)3))
marginsplot, ylabel(-0.2(0.1)0.2) recast(line) recastci(rline) ytitle("Probability One Nation vote") xtitle("People centerdness") xlabel(0(0.5)3) title("") yline(0)
graph export "margin_peoplecentred_ONvote.tiff", as(tif) replace

logistic vote_on pop_people_centred c.pop_anti_elite##c.pop_communication pop_manichean_outlook strong_leader disrupt_punish limit_police too_much_hel_ind celebrate_more_ind more_effords_by_ind migrants_allowed age gender i.education income i.employ [pweight = module_weight]
outreg2 using ON_interact.doc, eform append ctitle(interaction 2) dec(2) label(proper) side noparen
margins , dydx(pop_communication) at(pop_anti_elite=(0(0.1)3))
marginsplot, ylabel(-0.2(0.1)0.2) recast(line) recastci(rline) ytitle("Probability One Nation vote") xtitle("Anti-elite") xlabel(0(0.5)3) title("") yline(0)
graph export "margin_antielite_ONvote.tiff", as(tif) replace


logistic vote_on pop_people_centred pop_anti_elite c.pop_manichean_outlook##c.pop_communication strong_leader disrupt_punish limit_police too_much_hel_ind celebrate_more_ind more_effords_by_ind migrants_allowed age gender i.education income i.employ [pweight = module_weight]
outreg2 using ON_interact.doc, eform append ctitle(interaction 3) dec(2) label(proper) side noparen
margins , dydx(pop_communication) at(pop_manichean_outlook=(0(0.1)3))
marginsplot, ylabel(-0.2(0.1)0.2) recast(line) recastci(rline) ytitle("Probability One Nation vote") xtitle("Manichean Outlook") xlabel(0(0.5)3) title("") yline(0)
graph export "margin_manichean_ONvote.tiff", as(tif) replace

**** VOTE MODELS
gen urban = 1
replace urban = 0 if geo_gccsa_au_interlude == "Rest of NSW" | geo_gccsa_au_interlude == "Rest of NT" |geo_gccsa_au_interlude == "Rest of Qld" |geo_gccsa_au_interlude == "Rest of SA" |geo_gccsa_au_interlude == "Rest of Tas." |geo_gccsa_au_interlude == "Rest of Vic." | geo_gccsa_au_interlude == "Rest of WA" 
tab urban

*no interaction
logistic vote_on pop_people_centred pop_anti_elite pop_manichean_outlook pop_communication age gender i.education income i.employ urban 
outreg2 using ON_interact_small.doc, eform ctitle(no interaction) dec(3) label(proper) side noparen

*interactions communication with three ideology dimensions
logistic vote_on c.pop_people_centred##c.pop_communication pop_anti_elite pop_manichean_outlook age gender i.education income i.employ urban 
outreg2 using ON_interact_small.doc, eform append ctitle(interaction 1) dec(3) label(proper) side noparen
margins , dydx(pop_people_centred) at(pop_communication=(0(0.1)3))
marginsplot, ylabel(-0.2(0.1)0.2) recast(line) recastci(rline) ytitle("Probability One Nation vote") xtitle("Attitude to populist communication") xlabel(0(0.5)3) title("Effect of People Centredness") yline(0)
graph export "margin_peoplecentred_ONvote_small.tiff", as(tif) replace
graph save PeopleCentred, replace

logistic vote_on pop_people_centred c.pop_anti_elite##c.pop_communication pop_manichean_outlook age gender i.education income i.employ urban 
outreg2 using ON_interact_small.doc, eform append ctitle(interaction 2) dec(3) label(proper) side noparen
margins , dydx(pop_anti_elite) at(pop_communication=(0(0.1)3))
marginsplot, ylabel(-0.2(0.1)0.2) recast(line) recastci(rline) ytitle("Probability One Nation vote") xtitle("Attitude to populist communication") xlabel(0(0.5)3) title("Effect of Anti-Elite attitudes") yline(0)
graph export "margin_antielite_ONvote_small.tiff", as(tif) replace
graph save AntiElite, replace

logistic vote_on pop_people_centred pop_anti_elite c.pop_manichean_outlook##c.pop_communication age gender i.education income i.employ urban 
outreg2 using ON_interact_small.doc, eform append ctitle(interaction 3) dec(3) label(proper) side noparen
margins , dydx(pop_manichean_outlook) at(pop_communication=(0(0.1)3))
marginsplot, ylabel(-0.2(0.1)0.2) recast(line) recastci(rline) ytitle("Probability One Nation vote") xtitle("Attitude to populist communication") xlabel(0(0.5)3) title("Effect of Manichean Outlook") yline(0)
graph export "margin_manichean_ONvote_small.tiff", as(tif) replace
graph save Manichean, replace

graph combine PeopleCentred.gph AntiElite.gph Manichean.gph
graph export "Interactions Pop Communication.tiff", as(tif) replace

*** rerunning main model with ideational dimension and overal populism score

logistic vote_on pop_people_centred pop_anti_elite pop_manichean_outlook pop_communication age gender i.education income i.employ urban 
outreg2 using ON_R1.doc, eform ctitle(4 Dimensions) dec(3) label(proper) side noparen

logistic vote_on pop_ideational pop_communication age gender i.education income i.employ urban 
outreg2 using ON_R1.doc, eform append ctitle(Ideational Dimension) dec(3) label(proper) side noparen

logistic vote_on c.pop_ideational##c.pop_communication age gender i.education income i.employ urban 
outreg2 using ON_R1.doc, eform append ctitle(Ideational Dimension Inter) dec(3) label(proper) side noparen
margins , dydx(pop_ideational) at(pop_communication=(0(0.1)3))
marginsplot, ylabel(-0.2(0.1)0.2) recast(line) recastci(rline) ytitle("Probability One Nation vote") xtitle("Attitude to populist communication") xlabel(0(0.5)3) title("Marginal Effect of Populist Ideational Dimension") yline(0) scheme(plotplain)
graph export "margin_PopIdeaDim_small.tiff", as(tif) replace

logistic vote_on pop_ideational age gender i.education income i.employ urban 
outreg2 using ON_R1.doc, eform append ctitle(Ideational Dimension ONLY) dec(3) label(proper) side noparen

logistic vote_on pop_all age gender i.education income i.employ urban 
outreg2 using ON_R1.doc, eform append ctitle(Populism score) dec(3) label(proper) side noparen

*** find out who gets dropped

logistic vote_on pop_people_centred pop_anti_elite pop_manichean_outlook pop_communication age gender i.education income i.employ urban 
gen sample = e(sample)
tab sample

sum vote_on pop_people_centred pop_anti_elite pop_manichean_outlook pop_communication age gender i.education income i.employ urban  if sample == 1
sum vote_on pop_people_centred pop_anti_elite pop_manichean_outlook pop_communication age gender i.education income i.employ urban  if sample == 0

tab vote_on , miss

sum vote_on pop_people_centred pop_anti_elite pop_manichean_outlook pop_communication age gender i.education income i.employ urban  if sample == 0 & vote_on != .

browse pop_people_centred pop_anti_elite pop_manichean_outlook pop_communication age gender education income employ urban if sample == 0 & vote_on == 0


************************************
**** explaining populism, focus on education and generations
************************************

gen generation = .
replace generation = 0 if age > 73
replace generation = 1 if age < 74 & age > 54
replace generation = 2 if age < 55 & age > 38
replace generation = 3 if age < 39 & age > 22
replace generation = 4 if age < 23
label var generation generations
label define generation 0 "Silent" 1 "Boomer" 2 "Gen X" 3 "Millenial" 4 "Gen Z"
label val generation generation
tab generation

reg pop_people_centred i.education i.generation gender income urban i.satdem i.vote19  [pweight = module_weight]
outreg2 using POP_charac2.doc,  ctitle(People Centredness) dec(3) side noparen replace

reg pop_anti_elite i.education i.generation gender income urban i.satdem i.vote19 [pweight = module_weight]
outreg2 using POP_charac2.doc,  append ctitle(Anti-Elite) dec(3) label() side noparen

reg pop_manichean_outlook i.education i.generation gender income urban i.satdem i.vote19 [pweight = module_weight]
outreg2 using POP_charac2.doc,  append ctitle(Manichean Outlook) dec(3) label() side noparen

reg pop_communication i.education i.generation gender income urban i.satdem i.vote19 [pweight = module_weight]
outreg2 using POP_charac2.doc,  append ctitle(Populist Communication) dec(3) label() side noparen

baby boomers as reference
reg pop_people_centred i.education ib1.generation gender income i.satdem i.vote19  [pweight = module_weight]
outreg2 using POP_charac2.doc,  ctitle(People Centredness) dec(2) side noparen replace

reg pop_anti_elite i.education ib1.generation gender income i.satdem i.vote19 [pweight = module_weight]
outreg2 using POP_charac2.doc,  append ctitle(Anti-Elite) dec(2) label() side noparen

reg pop_manichean_outlook i.education ib1.generation gender income i.satdem i.vote19 [pweight = module_weight]
outreg2 using POP_charac2.doc,  append ctitle(Manichean Outlook) dec(2) label() side noparen

reg pop_communication i.education ib1.generation gender income i.satdem i.vote19 [pweight = module_weight]
outreg2 using POP_charac2.doc,  append ctitle(Populist Communication) dec(2) label() side noparen

******* With other attitudes

reg pop_people_centred strong_leader disrupt_punish limit_police too_much_hel_ind celebrate_more_ind more_effords_by_ind migrants_allowed age gender i.education ib8.income##i.worker if q8c != "Not Asked" [pweight = module_weight]
outreg2 using POP.doc, eform ctitle(People Centredness) dec(2) label(proper) side noparen replace

reg pop_anti_elite strong_leader disrupt_punish limit_police too_much_hel_ind celebrate_more_ind more_effords_by_ind migrants_allowed age gender i.education ib8.income##i.worker if q8c != "Not Asked" [pweight = module_weight]
outreg2 using POP.doc, eform append ctitle(Anti-Elite) dec(2) label(proper) side noparen

reg pop_manichean_outlook strong_leader disrupt_punish limit_police too_much_hel_ind celebrate_more_ind more_effords_by_ind migrants_allowed age gender i.education ib8.income##i.worker if q8c != "Not Asked" [pweight = module_weight]
outreg2 using POP.doc, eform append ctitle(Manichean Outlook) dec(2) label(proper) side noparen

reg pop_communication strong_leader disrupt_punish limit_police too_much_hel_ind celebrate_more_ind more_effords_by_ind migrants_allowed age gender i.education ib8.income##i.worker if q8c != "Not Asked" [pweight = module_weight]
outreg2 using POP.doc, eform append ctitle(Populist Communication) dec(2) label(proper) side noparen

******** Without other attitudes

reg pop_people_centred age gender i.education ib8.income##i.worker i.satdem i.vote19 if q8c != "Not Asked" [pweight = module_weight]
outreg2 using POP_charac.doc, eform ctitle(People Centredness) dec(2) label(proper) side noparen replace

reg pop_anti_elite age gender i.education ib8.income##i.worker i.satdem i.vote19 if q8c != "Not Asked" [pweight = module_weight]
outreg2 using POP_charac.doc, eform append ctitle(Anti-Elite) dec(2) label(proper) side noparen

reg pop_manichean_outlook age gender i.education i.satdem i.vote19 ib8.income##i.worker if q8c != "Not Asked" [pweight = module_weight]
outreg2 using POP_charac.doc, eform append ctitle(Manichean Outlook) dec(2) label(proper) side noparen

reg pop_communication age gender i.education ib8.income##i.worker i.satdem i.vote19 if q8c != "Not Asked" [pweight = module_weight]
outreg2 using POP_charac.doc, eform append ctitle(Populist Communication) dec(2) label(proper) side noparen


